


@FunctionalInterface  //用于检查是否只有一个抽象方法
interface NoParameterNoReturn {
    //注意只能有一个抽象方法 (但可以有静态方法和default方法)
    void test();
    /**
       static void test1(){
        }
        default void test3() {
        }
     */
}

interface MoreParameterReturn {
    //注意只能有一个抽象方法 (但可以有静态方法和default方法)
    int test(String s,int a);
    /**
     static void test1(){
     }
     default void test3() {
     }
     */
}

public class Test {
    public static void main(String[] args) {
        //lambda表达式
        //没有返回值，没有参数
        //下面的匿名内部类可以用lambda表达式来表示,但是不太好调试，需要对这个接口非常的了解
        NoParameterNoReturn noParameterNoReturn = () -> {System.out.println("hello");};
        noParameterNoReturn.test();

        //有返回值，多个参数
        MoreParameterReturn moreParameterReturn = (s,a) -> {
            System.out.println("字符串: " + s + " 整数：" + a);
            return a;
        };
        int ret = moreParameterReturn.test("abc",10);
        System.out.println(ret);
    }

    public static void main1(String[] args) {
        NoParameterNoReturn noParameterNoReturn = new NoParameterNoReturn() {  //匿名内部类
            @Override
            public void test() {
                System.out.println("hello");
            }
        };
        noParameterNoReturn.test();
    }

    /**     错误的例子，报错了
    @Override
    public  void test() {
        System.out.println("hello - 3");
    }

    public static void main(String[] args) {
        Test.test();  这个地方报错了
    }
    */
}
